C语言高高手进``

来源:百度知道 编辑:UC知道 时间:2024/05/24 13:46:04
有没有这样的算法会的发下
a b c d,,, 等 17位字母有多少种排列顺序
例如三个字母是 abc acb cab等```

你的字母有没有重复的?如果没有,那就是个全排列问题。
答案是17!=355687428096000
太大了,估计计算机几天都算不出来。
方法是:穷举法或递归调用。最基本的就是穷举法,至于递归调用,翻翻数据结构方面的书,一般都有的。
下面的就是一个具体例子:
数字1-5可以组成多少个无重复数字的五位数,找出所有这样的五位数并统计个数,以最简代码编写。
#include <stdio.h>
#include <stdlib.h>

int main()
{int i,j,k,l,m,total=0;
for(i=1;i<6;i++) /*穷举各种情况*/
for(j=1;j<6;j++)
if(j!=i)
for(k=1;k<6;k++)
if(k!=i&&k!=j)
for(l=1;l<6;l++)
if(l!=k&&l!=j&&l!=i)
for(m=1;m<6;m++)
if(m!=l&&m!=k&&m!=j&&m!=i)
{ printf("%d%d%d%d%d\n",i,j,k,l,m);
total++;
}
printf("The total is: %d\n",total);
system("pause");
return 0;
}